#include<bits/stdc++.h>
using namespace std;
bool mst;
int q,l,r;
const int M=1e6+5;
#define mid ((l+r)>>1)
#define ull unsigned long long
set<pair<int,ull> > Sl[M],Sr[M];
int nl[M],nr[M],tp1,tp2;
mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());
struct xds{
	int mx[M<<2],mi[M<<2],_1[M<<2],_2[M<<2],_2l[M<<2],ril[M<<2],ler[M<<2],_3[M<<2];
	inline void pushup(int now){
		mx[now]=max(mx[now<<1],mx[now<<1|1]);
		mi[now]=min(mi[now<<1],mi[now<<1|1]);
		_1[now]=min(_1[now<<1],_1[now<<1|1]);
		if(_2[now<<1]>_2[now<<1|1]||(_2[now<<1]==_2[now<<1|1]&&_2l[now<<1]>_2l[now<<1|1]))_2[now]=_2[now<<1|1],_2l[now]=_2l[now<<1|1];
		else _2[now]=_2[now<<1],_2l[now]=_2l[now<<1];
		_3[now]=min({_3[now<<1],_3[now<<1|1],mi[now<<1|1]-mx[now<<1]+1});
		ril[now]=max(ril[now<<1],ril[now<<1|1]);
		ler[now]=min(ler[now<<1],ler[now<<1|1]);
		tp1=ler[now<<1|1]-ril[now<<1]+1,tp2=(tp1<=1e6?nr[ril[now<<1]]-nl[ler[now<<1|1]]+1:1e9);
		if(tp1<_2[now]||(tp1==_2[now]&&tp2<_2l[now]))_2[now]=tp1,_2l[now]=tp2;
		return;
	}
	inline void build(int now,int l,int r){
		if(l==r){
			mi[now]=1e9,_1[now]=_2[now]=_2l[now]=ler[now]=_3[now]=1e9;
			ril[now]=-1e9,mx[now]=-1e9;
			nl[l]=-1e9,nr[l]=1e9;
			return;
		}
		build(now<<1,l,mid),build(now<<1|1,mid+1,r);
		return pushup(now);
	}
	inline void upd(int now,int l,int r,int pos){
		if(l==r)return mi[now]=nr[l],mx[now]=nl[l],
			ril[now]=(Sr[l].size()!=1?l:-1e9),ler[now]=(Sl[l].size()!=1?r:1e9),
			_1[now]=min(nr[l]-l+1,l-nl[l]+1),
			_2[now]=((Sl[l].size()!=1&&Sr[l].size()!=1)?1:1e9),_2l[now]=nr[l]-nl[l]+1,void();
		if(pos<=mid)upd(now<<1,l,mid,pos);
		else upd(now<<1|1,mid+1,r,pos);
		return pushup(now),void();
	}
}T;
char op;
inline void solve(){
	cin>>op>>l>>r;
	r--;
	if(op=='A'){
		Sr[l].insert(make_pair(r,rnd()));
		Sl[r].insert(make_pair(l,rnd()));
		nr[l]=min(nr[l],r);
		nl[r]=max(nl[r],l);
	}else if(op=='R'){
		auto it=Sr[l].lower_bound(make_pair(r,0));
		Sr[l].erase(it);
		it=Sl[r].lower_bound(make_pair(l,0));
		Sl[r].erase(it);
		if(nr[l]==r)nr[l]=Sr[l].begin()->first;
		if(nl[r]==l)nl[r]=(--Sl[r].end())->first;
	}
	T.upd(1,1,1e6,l),T.upd(1,1,1e6,r);
	if(T._3[1]<=1e6)cout<<T._3[1]<<"\n";
	else if(T._1[1]<=T._2[1])cout<<T._1[1]<<"\n";
	else cout<<T._2l[1]<<"\n";
	return;
}
bool med;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	freopen("stone.in","r",stdin);
	freopen("stone.out","w",stdout);
	cerr<<(&mst-&med)/1024.0/1024.0<<" MB\n";
	cin>>q;
	for(int i=1;i<=1e6;i++)Sl[i].insert(make_pair(-1e9,0)),Sr[i].insert(make_pair(1e9,0));
	T.build(1,1,1e6);
	while(q--)solve();
	return 0;
}